Golang 泛型应用 | 您所在的位置:网站首页 › go 泛型应用 › Golang 泛型应用 |
声明一个泛型函数
package main
import "fmt"
func printSlice[T any](s []T){
for _,v := range s{
fmt.Printf("%v\n",v)
}
}
func main(){
printSlice[int]([]int{66,77,88,99,100})
printSlice[float64]([]float64{1.1,2.2,5.5})
printSlice[string]([]string{"烤鸡","烤鸭","烤鱼","烤面筋"})
//省略显示类型
printSlice([]int64{55,44,33,22,11})
}
[T any]参数的类型,意思是该函数支持任何T类型; 多个泛型参数语法: [T, M any] [T any, M any] [T any, M comparable] 在调用这个泛型函数的时候,可以显示指定类型参数, 如: printSlice[int]([]int{66,77,88,99,100}) 也可以省略显示类型 比如 printSlice([]int64(55,44,33,22,11)) 声明一个泛型切片带有类型参数的类型被叫做泛型类型。下面定义一个底层类型为切片类型的新类型 vector。它是可以存储任何类型的的切片。要使用泛型类型,要先对其进行实例化,就是给类型参数指定一个实参。 package main import "fmt" type vector[T any][]T func printSlice[T any](s []T){ for _,v := range s{ fmt.Printf("%v",v) } } func main(){ v:=vector[int]{58,1881} printSlice(v) v2:=vector[string]{"烤鸡","烤鸭","烤鱼","烤面筋"} printSlice(v2) } 声明一个泛型map package main import "fmt" type M[K string, V any] map[K]V //这里的K不支持any ,由于底层map不支持,所以使用string func main() { m1 := M[string, int]{"key": 1} m1["key"] = 2 m2 := M[string, string]{"key": "value"} m2["key"] = "new value" fmt.Println(m1, m2) } 声明一个泛型通道 package main import "fmt" type C[T any] chan T func main() { c1 := make(C[int], 10) c1 |
CopyRight 2018-2019 实验室设备网 版权所有 |